<!-- yangbuyi Copyright (c) https://yby6.com 2023. -->

<template>
  <view class="u-divider" :style="[$u.addStyle(customStyle)]" @tap="click">
    <u-line
      :color="lineColor"
      :customStyle="leftLineStyle"
      :hairline="hairline"
      :dashed="dashed"
    ></u-line>
    <text v-if="dot" class="u-divider__dot">●</text>
    <text v-else-if="text" class="u-divider__text" :style="[textStyle]">{{
      text
    }}</text>
    <u-line
      :color="lineColor"
      :customStyle="rightLineStyle"
      :hairline="hairline"
      :dashed="dashed"
    ></u-line>
  </view>
</template>

<script>
import props from "./props.js";
/**
 * divider 分割线
 * @description 区隔内容的分割线，一般用于页面底部"没有更多"的提示。
 * @tutorial https://www.uviewui.com/components/divider.html
 * @property {Boolean}			dashed			是否虚线 （默认 false ）
 * @property {Boolean}			hairline		是否细线 （默认  true ）
 * @property {Boolean}			dot				是否以点替代文字，优先于text字段起作用 （默认 false ）
 * @property {String}			textPosition	内容文本的位置，left-左边，center-中间，right-右边 （默认 'center' ）
 * @property {String | Number}	text			文本内容
 * @property {String | Number}	textSize		文本大小 （默认 14）
 * @property {String}			textColor		文本颜色 （默认 '#909399' ）
 * @property {String}			lineColor		线条颜色 （默认 '#dcdfe6' ）
 * @property {Object}			customStyle		定义需要用到的外部样式
 *
 * @event {Function}	click	divider组件被点击时触发
 * @example <u-divider :color="color">锦瑟无端五十弦</u-divider>
 */
export default {
  name: "u-divider",
  mixins: [uni.$u.mpMixin, uni.$u.mixin, props],
  computed: {
    textStyle() {
      const style = {};
      style.fontSize = uni.$u.addUnit(this.textSize);
      style.color = this.textColor;
      return style;
    },
    // 左边线条的的样式
    leftLineStyle() {
      const style = {};
      // 如果是在左边，设置左边的宽度为固定值
      if (this.textPosition === "left") {
        style.width = "80rpx";
      } else {
        style.flex = 1;
      }
      return style;
    },
    // 右边线条的的样式
    rightLineStyle() {
      const style = {};
      // 如果是在右边，设置右边的宽度为固定值
      if (this.textPosition === "right") {
        style.width = "80rpx";
      } else {
        style.flex = 1;
      }
      return style;
    },
  },
  methods: {
    // divider组件被点击时触发
    click() {
      this.$emit("click");
    },
  },
};
</script>

<style lang="scss" scoped>
@import "../../libs/css/components.scss";
$u-divider-margin: 15px 0 !default;
$u-divider-text-margin: 0 15px !default;
$u-divider-dot-font-size: 12px !default;
$u-divider-dot-margin: 0 12px !default;
$u-divider-dot-color: #c0c4cc !default;

.u-divider {
  @include flex;
  flex-direction: row;
  align-items: center;
  margin: $u-divider-margin;

  &__text {
    margin: $u-divider-text-margin;
  }

  &__dot {
    font-size: $u-divider-dot-font-size;
    margin: $u-divider-dot-margin;
    color: $u-divider-dot-color;
  }
}
</style>
